import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * ServletContext的使用
 */
public class S10_ServletContext extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    /*
        1.ServletContext是一个接口，它表示Servlet上下文对象
        2.一个web工程，只有一个ServletContext对象实例
        3.ServletContext对象是在web工程启动的时候创建，在web工程停止时销毁
        4.ServletContext对象可以通过ServletConfig.getServletContext方法获得对ServletContext对象的引用
          也可以通过this.getServletContext()来获得其对象的引用
        5.由于一个Web应用中的所有Servlet共享同一个ServletContext对象，因此Servlet对象之间可以通过ServletContext对象
          来实现多个Servlet间通讯。ServletContext对象通常也被称之为域对象
     */
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取web.xml的 context-parameter

        //1.获取到ServletContext对象
        ServletContext servletContext = super.getServletContext();
        //2.获取website
        String website = servletContext.getInitParameter("website");
        String company = servletContext.getInitParameter("company");
        //3.获取项目的工程路径
        String contextPath = servletContext.getContextPath();
        //4.获取项目发布后真正的工作路径
        // /表示项目发布后的根路径 D:\IdeaCode\javaWeb\out\artifacts\servlet_war_exploded\
        String realPath = servletContext.getRealPath("/");
        System.out.println("website = " + website);
        System.out.println("company = " + company);
        System.out.println("项目路径 = " + contextPath);    // /servlet
        System.out.println("项目发布后的绝对路径 = " + realPath);// D:\IdeaCode\javaWeb\out\artifacts\servlet_war_exploded\
    }
}
